gtk_settings_get_default
gtk_settings_get_for_display
gtk_settings_reset_property
+GtkSystemSetting
<SUBSECTION Standard>
GtkSettingsClass
GTK_IS_SETTINGS
GTK_CONSTRAINT_VFL_PARSER_ERROR_INVALID_RELATION
} GtkConstraintVflParserError;
+/**
+ * GtkSystemSetting:
+ * @GTK_SYSTEM_SETTING_DPI: the #GtkSettings:gtk-xft-dpi setting has changed
+ * @GTK_SYSTEM_SETTING_FONT_NAME: The #GtkSettings:gtk-font-name setting has changed
+ * @GTK_SYSTEM_SETTING_FONT_CONFIG: The font configuration has changed in a way that
+ * requires text to be redrawn. This can be any of the
+ * #GtkSettings:gtk-xft-antialias, #GtkSettings:gtk-xft-hinting,
+ * #GtkSettings:gtk-xft-hintstyle, #GtkSettings:gtk-xft-rgba or
+ * #GtkSettings:gtk-fontconfig-timestamp settings
+ * @GTK_SYSTEM_SETTING_DISPLAY: The display has changed
+ * @GTK_SYSTEM_SETTING_ICON_THEME: The icon theme has changed in a way that requires
+ * icons to be looked up again
+ *
+ * Values that can be passed to the GtkWidgetClass.system_setting_changed
+ * vfunc to indicate that a system setting has changed and widgets may
+ * need to drop caches, or react otherwise.
+ *
+ * Most of the values correspond to #GtkSettings properties.
+ *
+ * More values may be added over time.
+ */
+typedef enum {
+ GTK_SYSTEM_SETTING_DPI,
+ GTK_SYSTEM_SETTING_FONT_NAME,
+ GTK_SYSTEM_SETTING_FONT_CONFIG,
+ GTK_SYSTEM_SETTING_DISPLAY,
+ GTK_SYSTEM_SETTING_ICON_THEME
+} GtkSystemSetting;
+
#endif /* __GTK_ENUMS_H__ */
GtkTooltip *tooltip);
static void gtk_widget_real_css_changed (GtkWidget *widget,
GtkCssStyleChange *change);
+static void gtk_widget_real_system_setting_changed (GtkWidget *widget,
+ GtkSystemSetting setting);
static void gtk_widget_real_set_focus_child (GtkWidget *widget,
GtkWidget *child);
klass->keynav_failed = gtk_widget_real_keynav_failed;
klass->query_tooltip = gtk_widget_real_query_tooltip;
klass->css_changed = gtk_widget_real_css_changed;
+ klass->system_setting_changed = gtk_widget_real_system_setting_changed;
/* Accessibility support */
klass->priv->accessible_type = GTK_TYPE_ACCESSIBLE;
}
}
+static void
+gtk_widget_real_system_setting_changed (GtkWidget *widget,
+ GtkSystemSetting setting)
+{
+ GtkWidget *child;
+
+ for (child = _gtk_widget_get_first_child (widget);
+ child != NULL;
+ child = _gtk_widget_get_next_sibling (child))
+ {
+ gtk_widget_system_setting_changed (child, setting);
+ }
+}
+
static gboolean
direction_is_forward (GtkDirectionType direction)
{
GTK_WIDGET_GET_CLASS (widget)->css_changed (widget, change);
}
+void
+gtk_widget_system_setting_changed (GtkWidget *widget,
+ GtkSystemSetting setting)
+{
+ GTK_WIDGET_GET_CLASS (widget)->system_setting_changed (widget, setting);
+}
+
+void
+gtk_system_setting_changed (GdkDisplay *display,
+ GtkSystemSetting setting)
+{
+ GList *list, *toplevels;
+
+ toplevels = gtk_window_list_toplevels ();
+ g_list_foreach (toplevels, (GFunc) g_object_ref, NULL);
+
+ for (list = toplevels; list; list = list->next)
+ {
+ if (gtk_widget_get_display (list->data) == display)
+ gtk_widget_system_setting_changed (list->data, setting);
+ g_object_unref (list->data);
+ }
+
+ g_list_free (toplevels);
+}
+
GtkCssNode *
gtk_widget_get_css_node (GtkWidget *widget)
{
* should then discard their caches that depend on CSS and queue resizes or
* redraws accordingly. The default implementation will take care of this for
* all the default CSS properties, so implementations must chain up.
+ * @system_setting_changed: Emitted when a system setting was changed. Must chain up.
* @snapshot: Vfunc for gtk_widget_snapshot().
* @contains: Vfunc for gtk_widget_contains().
*/
void (* css_changed) (GtkWidget *widget,
GtkCssStyleChange *change);
+ void (* system_setting_changed) (GtkWidget *widget,
+ GtkSystemSetting settings);
+
void (* snapshot) (GtkWidget *widget,
GtkSnapshot *snapshot);
void gtk_widget_css_changed (GtkWidget *widget,
GtkCssStyleChange *change);
+void gtk_widget_system_setting_changed (GtkWidget *widget,
+ GtkSystemSetting setting);
+void gtk_system_setting_changed (GdkDisplay *display,
+ GtkSystemSetting setting);
void _gtk_widget_update_parent_muxer (GtkWidget *widget);
GtkActionMuxer * _gtk_widget_get_action_muxer (GtkWidget *widget,